package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark02_Oper_Transform {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换
        // TODO mapPartitions
        // map算子是将数据集中的每一条数据进行转换，效率比较低
        // mapPartitions算子将数据集中的数据分区为单位进行转换，类似于批处理，效率比较高
        val rdd : RDD[Int] = sc.makeRDD(List(1,2,3,4), 2)

        val rdd1 = rdd.map(
            num => {
                println("***************************")
                num * 2
            }
        )

        val rdd2= rdd.mapPartitions(
            list => {
                println("%%%%%%%%%%%%%%%%%%%%%%%%%%%")
                list.map(_*2)
            }
        )

        rdd1.collect().foreach(println)
        println("============================")
        rdd2.collect().foreach(println)

        sc.stop()

    }
}
